﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Ext.Net;

public partial class Views_Qualifications : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            GridPanelQuas_ReadData();
        }
    }

    protected void GridPanelQuas_ReadData()
    {
        try
        {
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                StoreQuas.DataSource = db.Qualifications.ToList<Qualification>();
                StoreQuas.DataBind();

                gridPanelQuas.ActiveIndex = -1;
            }
        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo hệ thống", "Hệ thống đang bận, hảy thử lại sau").Show();
        }
    }

    protected void StoreQuas_ReadData(object sender, StoreReadDataEventArgs e)
    {
        GridPanelQuas_ReadData();
    }

    protected void RowSelected(object sender, DirectEventArgs e)
    {
        try
        {
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                RowSelectionModel rsm = gridPanelQuas.SelectionModel.Primary as RowSelectionModel;
                if (rsm.SelectedRow == null)
                {
                    ResetControls_ViewInfor();
                    return;
                }

                int quaID = Int32.Parse(rsm.SelectedRow.RecordID);
                Qualification quas = db.Qualifications.Single(p => p.QuaID == quaID);

                lblViewID.Text = quas.QuaID.ToString();
                lblViewCode.Text = quas.CodeOfQua;
                lblViewName.Text = quas.NameOfQua;
                lblViewDesc.Text = quas.Descriptons;
                chkViewStatus.Checked = Boolean.Parse(quas.StatusOfQua.ToString());
            }
        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo hệ thống", "Hệ thống đang bận, hảy thử lại sau").Show();
        }
    }

    protected void btnToobarAdd_DirectClick(object sender, DirectEventArgs e)
    {
        ResetControls_windowAddQuas();
        windowAddQuas.Show();
    }

    protected void btnAdd_DirectClick(object sender, DirectEventArgs e)
    {
        lblFormAddMsg.Text = "";
        if (txtFormAddCode.Text.Trim().Length == 0)
        {
            lblFormAddMsg.Text = "Mã trình độ chuyên môn không được bỏ trống";
            txtFormAddCode.Focus(true, 0);
            return;
        }
        if (txtFormAddName.Text.Trim().Length == 0)
        {
            lblFormAddMsg.Text = "Tên trình độ chuyên môn không được bỏ trống";
            txtFormAddName.Focus(true, 0);
            return;
        }
        if (txtFormAddDes.Text.Trim().Length == 0)
        {
            lblFormAddMsg.Text = "Mô tả trình độ chuyên môn không được bỏ trống";
            txtFormAddDes.Focus(true, 0);
            return;
        }

        try
        {
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                foreach (var item in db.Qualifications)
                {
                    if (txtFormAddCode.Text.Trim().Equals(item.CodeOfQua))
                    {
                        lblFormAddMsg.Text = "Mã trình độ chuyên môn đã tồn tại, hãy nhập lại";
                        txtFormAddCode.Focus(true, 0);
                        return;
                    }
                }

                Qualification quas = new Qualification()
                {
                    CodeOfQua = txtFormAddCode.Text.Trim(),
                    NameOfQua = txtFormAddName.Text.Trim(),
                    Descriptons = txtFormAddDes.Text.Trim(),
                    StatusOfQua = Boolean.Parse(chkFormAddStatus.Checked.ToString())
                };

                db.Qualifications.Add(quas);
                db.SaveChanges();

                windowAddQuas.Hidden = true;
                ResetControls_ViewInfor();
                GridPanelQuas_ReadData();
                X.Msg.Alert("Thông báo", "Thêm mới trình độ chuyên môn của cán bộ nhân viên thành công").Show();
            }
        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo hệ thống", "Hệ thống đang bận, xin bạn vui lòng quay lại sau").Show();
        }
    }

    protected void btnAddCancel_DirectClick(object sender, DirectEventArgs e)
    {
        windowAddQuas.Hidden = true;
        windowAddQuas.Dispose();
    }

    protected void btnToobarUpdate_DirectClick(object sender, DirectEventArgs e)
    {
        try
        {
            RowSelectionModel rsm = gridPanelQuas.SelectionModel.Primary as RowSelectionModel;
            if (rsm.SelectedRow == null)
            {
                X.Msg.Alert("Thông báo", "Bạn chưa chọn trình độ chuyên môn để cập nhật thông tin").Show();
                return;
            }
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                int quaID = Int32.Parse(rsm.SelectedRow.RecordID);
                Qualification quas = db.Qualifications.Single(p => p.QuaID == quaID);

                windowUpdateQuas.Show();
                lblFormUpdateMsg.Text = "";
                txtFormUpdateCode.Text = quas.CodeOfQua;
                txtFormUpdateName.Text = quas.NameOfQua;
                txtFormUpdateDes.Text = quas.Descriptons;
                chkFormUpdateStatus.Checked = Boolean.Parse(quas.StatusOfQua.ToString());
            }
        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo", "Hệ thống đang bận, hãy thử lại sau.").Show();
        }
    }

    protected void btnUpdate_DirectClick(object sender, DirectEventArgs e)
    {
        lblFormUpdateMsg.Text = "";
        if (txtFormUpdateCode.Text.Trim().Length == 0)
        {
            lblFormUpdateMsg.Text = "Mã trình độ chuyên môn không được bỏ trống";
            txtFormUpdateCode.Focus(true, 0);
            return;
        }
        if (txtFormUpdateName.Text.Trim().Length == 0)
        {
            lblFormUpdateMsg.Text = "Tên trình độ chuyên môn không được bỏ trống";
            txtFormUpdateName.Focus(true, 0);
            return;
        }
        if (txtFormUpdateDes.Text.Trim().Length == 0)
        {
            lblFormUpdateMsg.Text = "Mô tả trình độ chuyên môn không được bỏ trống";
            txtFormUpdateDes.Focus(true, 0);
            return;
        }

        try
        {
            RowSelectionModel rsm = gridPanelQuas.SelectionModel.Primary as RowSelectionModel;
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                int quaID = Int32.Parse(rsm.SelectedRow.RecordID);
                Qualification quasUpdate = db.Qualifications.Single(p => p.QuaID == quaID);

                string codeNameUpdate = txtFormUpdateCode.Text.Trim();
                foreach (var item in db.Qualifications)
                {
                    if (item.CodeOfQua.Equals(codeNameUpdate.ToLower()) && !item.CodeOfQua.Equals(quasUpdate.CodeOfQua))
                    {
                        lblFormUpdateMsg.Text = "Mã đã tồn tại, hãy nhập mã mới.";
                        txtFormUpdateCode.Focus(true, 0);
                        return;
                    }
                }

                quasUpdate.CodeOfQua = txtFormUpdateCode.Text.Trim();
                quasUpdate.NameOfQua = txtFormUpdateName.Text.Trim();
                quasUpdate.Descriptons = txtFormUpdateDes.Text.Trim();
                quasUpdate.StatusOfQua = Boolean.Parse(chkFormUpdateStatus.Checked.ToString());

                db.SaveChanges();

                GridPanelQuas_ReadData();
                windowUpdateQuas.Hidden = true;
                windowUpdateQuas.Dispose();
                X.Msg.Alert("Thông báo", "Cập nhật trình độ chuyên môn của cán bộ nhân viên thành công").Show();
            }
        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo", "Hệ thống đang bận, hãy thử lại sau.").Show();
        }
    }

    protected void btnCancelUpdate_DirectClick(object sender, DirectEventArgs e)
    {
        windowUpdateQuas.Hidden = true;
        windowUpdateQuas.Dispose();
    }

    protected void btnToobarDelete_DirectClick(object sender, DirectEventArgs e)
    {
        try
        {
            RowSelectionModel rsm = gridPanelQuas.SelectionModel.Primary as RowSelectionModel;
            if (rsm.SelectedRow == null)
            {
                X.Msg.Alert("Thông báo", "Bạn chưa chọn trình độ chuyên môn để xóa thông tin").Show();
                return;
            }
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                int quaID = Int32.Parse(rsm.SelectedRow.RecordID);
                Qualification quasDelete = db.Qualifications.Single(p => p.QuaID == quaID);

                X.Msg.Confirm("Thông báo hệ thống", String.Format("Bạn có muốn xóa trình độ chuyên môn đã chọn ? [{0}]", quasDelete.NameOfQua),
                    new MessageBoxButtonsConfig()
                    {
                        Yes = new MessageBoxButtonConfig
                        {
                            Text = "Xóa",
                            Handler = "App.direct.DoYes_DeleteQualifications();"
                        },
                        No = new MessageBoxButtonConfig
                        {
                            Text = "Hủy bỏ"
                        }
                    }).Show();
            }
        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo", "Hệ thống đang bận, hãy thử lại sau.").Show();
        }
    }

    [DirectMethod]
    public void DoYes_DeleteQualifications()
    {
        try
        {
            RowSelectionModel rsm = gridPanelQuas.SelectionModel.Primary as RowSelectionModel;
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                int quaID = Int32.Parse(rsm.SelectedRow.RecordID);
                Qualification quasDelete = db.Qualifications.Single(p => p.QuaID == quaID);

                db.Qualifications.Remove(quasDelete);
                db.SaveChanges();

                GridPanelQuas_ReadData();
                ResetControls_ViewInfor();
                X.Msg.Alert("Thông báo", "Xóa trình độ chuyên môn của cán bộ nhân viên thành công").Show();
            }
        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo", "Hệ thống đang bận, hãy thử lại sau.").Show();
        }
    }

    protected void ResetControls_windowAddQuas()
    {
        lblFormAddMsg.Text = "";
        txtFormAddCode.Text = "";
        txtFormAddName.Text = "";
        txtFormAddDes.Text = "";
        chkFormAddStatus.Checked = false;
    }

    protected void ResetControls_windowUpdateQuas()
    {
        lblFormUpdateMsg.Text = "";
        txtFormUpdateCode.Text = "";
        txtFormUpdateName.Text = "";
        txtFormUpdateDes.Text = "";
        chkFormUpdateStatus.Checked = false;
    }

    protected void ResetControls_ViewInfor()
    {
        lblViewID.Text = "";
        lblViewCode.Text = "";
        lblViewName.Text = "";
        lblViewDesc.Text = "";
        chkViewStatus.Checked = false;
    }
}